package data.platform.common.service.query;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.Collection;
import java.util.Map;
import java.util.Optional;

public interface MetricTagQueryService {

    Flux<String> filterMetric(String metric);

    Flux<String> filterTagKeyOfMetric(String metric);

    Flux<String> filterTagValueOfMetric(String metric, String tagKey, String tagValue);

    Optional<Integer> findTagId(String tagJson);

    Optional<String> getTagJson(Integer tagId);

    Collection<String> matchingTagByMetric(String metric);

    Collection<String> matchingTag(String metric, Map<String, String> tags);
}
